pachanga
Новичок
Кто шарит в регулярных, помогите
Проблема в следущем:
У меня есть некий html код, мне надо отловить там все атрибуты href в тегах <a> и поменять ссылку на файл с расширения .html на .htm (так надо, не удивляйтесь),
т.е. <a href=wow.html> меняется на <a href=wow.htm>.
Нижеследущий код(кстати, можете его исполнить у себя) это в принципе делает, но с оговоркой(ниже):
Результатом работы скрипта будет:
<p><br><a href=\'/chapter2/2.2.html\' class=\'level\'>\'Я ламер?\'</a><b>wow</b>
<div class="levelnav"><a href=/chapter2/2.3.html class="level">"Я ламер?"</a></div>
<span><a href=\'/chapter2/2.4.html\' class="level">Я ламер?</a></span>
Если заметили, ко всем одинарным кавычкам внутри <a../a> добавились слэши ! Почему????!!! Я битых 3 часа башку ломаю!
Проблема в следущем:
У меня есть некий html код, мне надо отловить там все атрибуты href в тегах <a> и поменять ссылку на файл с расширения .html на .htm (так надо, не удивляйтесь),
т.е. <a href=wow.html> меняется на <a href=wow.htm>.
Нижеследущий код(кстати, можете его исполнить у себя) это в принципе делает, но с оговоркой(ниже):
PHP:
//html
$htm = <<<EOD
<p><br><a href='/chapter2/2.2.html' class='level'>'Я ламер?'</a><b>wow</b>
<div class="levelnav"><a href=/chapter2/2.3.html class="level">"Я ламер?"</a></div>
<span><a href='/chapter2/2.4.html' class="level">Я ламер?</a></span>
EOD;
$search = array("/(<a\s+href=(?:\"|\'|))([^\"\'>\s]+)((?:\"|\'|).*?>.*?<\/a>)/ie");//черт ногу сломит, но работает :)
$replace = array("\"$1\".change_extension(\"$2\").\"$3\""); //change_extension объявлена ниже
$htm = preg_replace($search, $replace, $htm);
echo $htm;
/////////////////////////////////////////////
function change_extension($url)
{
$path_parts = pathinfo($url);
if(isset($path_parts['extension']))
{
$extension = '.'.$path_parts['extension'];
if( $extension == '.html')
{
$replace = array("$extension" => '.htm');
$url = strtr($url, $replace);
return $url;
}
}
return $url;
}
/////////////////////////////////////////////
<p><br><a href=\'/chapter2/2.2.html\' class=\'level\'>\'Я ламер?\'</a><b>wow</b>
<div class="levelnav"><a href=/chapter2/2.3.html class="level">"Я ламер?"</a></div>
<span><a href=\'/chapter2/2.4.html\' class="level">Я ламер?</a></span>
Если заметили, ко всем одинарным кавычкам внутри <a../a> добавились слэши ! Почему????!!! Я битых 3 часа башку ломаю!