Files
roi-theme/wp-content/plugins/advanced-ads/modules/ads-txt/includes/class-advanced-ads-ads-txt-real-file.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

98 lines
1.8 KiB
PHP
Executable File

<?php
/**
* Represents a real ads.txt file.
*/
class Advanced_Ads_Ads_Txt_Real_File {
private $records = [];
/**
* Parse a real file.
*
* @param string $file File data.
*/
public function parse_file( $file ) {
$lines = preg_split( '/\r\n|\r|\n/', $file );
$comments = [];
foreach ( $lines as $line ) {
$line = explode( '#', $line );
if ( ! empty( $line[1] ) && $comment = trim( $line[1] ) ) {
$comments[] = '# ' . $comment;
}
if ( ! trim( $line[0] ) ) {
continue;
}
$rec = explode( ',', $line[0] );
$data = [];
foreach ( $rec as $k => $r ) {
$r = trim( $r, " \n\r\t," );
if ( $r ) {
$data[] = $r;
}
}
if ( $data ) {
// Add the record and comments that were placed above or to the right of it.
$this->add_record( implode( ', ', $data ), $comments );
}
$comments = [];
}
}
/**
* Add record.
*
* @string $data Record without comments.
* @array $comments Comments related to the record.
*/
private function add_record( $data, $comments = [] ) {
$this->records[] = [ $data, $comments ];
}
/**
* Get records
*
* @return array
*/
public function get_records() {
return $this->records;
}
/**
* Output file
*
* @return string
*/
public function output() {
$r = '';
foreach ( $this->records as $rec ) {
foreach ( $rec[1] as $rec1 ) {
$r .= $rec1 . "\n";
}
$r .= $rec[0] . "\n";
}
return $r;
}
/**
* Subtract another ads.txt file.
*
* @return string
*/
public function subtract( Advanced_Ads_Ads_Txt_Real_File $subtrahend ) {
$r1 = $subtrahend->get_records();
foreach ( $this->records as $k => $record ) {
foreach ( $r1 as $r ) {
if ( $record[0] === $r[0] ) {
unset( $this->records[ $k ] );
}
}
}
}
}