Что лучше использовать regexp или strpos?

Tammaco

Новичок
Что лучше использовать regexp или strpos?

Добрый вечер!
Задача такова: нужно заменить в html-коде в теге <script> тело функции(точнее закодировать в base64). Т.е. если попадается тег <script ...></script> без функции,его игнорируем(удаляем).
Как проще или эффективнее это сделать?Что применить?
 

Nogrogomed

Новичок
А почему нельзя сразу при выводе формировать нужную строку, которая уже будет готова к употребелению?
 

Tammaco

Новичок
Nogrogomed
Простите, что вы имеете в виду под
>сразу при выводе формировать нужную строку ?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Tammaco
Зачем?
 

Tammaco

Новичок
Дело в том,что html потом сохраняется в xml и есть потребность кодировать тело функции. Всё-таки есть вариант так сделать или нет?
 

hammet

Новичок
при формировании js кодируйте base64() и не нужно будет ничего парсить....

странная логика.
 

Tammaco

Новичок
Логика и правда странная.
Спасибо за альтернативу,но
всё-таки путь к решению вышеуказанной задачи никто не может подсказать?
 

Nogrogomed

Новичок
зачем подсказывать неправильный путь вышеуказанной задачи, если правильный уже подсказан?

Если хочешь идти неправильным путем - то можешь использовать и regexp и strpos.
 

Tammaco

Новичок
Дело в том, что этот путь нужно осуществить. Это не моё решение, но выполнить нужно мне.
 

hammet

Новичок
ну приведите хотя бы результаты ваших попыток....
или алгоритм?
 

Tammaco

Новичок
preg_match_all("/(<script)( [^>]*)?>([^<]*)<\/script>/", $html, $matches);
$func_text = $matches[3]; - так можно получить текст функции;
Но потом ещё нужно заменить его, для этого нужна позиция начала и конца скрипта.
 

andymc

Новичок
PHP:
preg_replace('~<script.*>(.*)</script>~sUi', '<script>тратата или $1</script>', $html)
$1 - сам текст
 

Tammaco

Новичок
andymc
А как же тогда узнать, есть ли в скрипте функция и стоит ли её заменять или просто удалить?

-~{}~ 04.10.07 21:41:

Alexandre
Это конечно имеет значение, только ведь придётся несколько раз изменять и переписывать строки, это действительно будет быстрее, чем регэкспы?
 

andymc

Новичок
// ну вот небольшой тест, надеюсь неиспугаетесь :)
PHP:
$html = '
<script language="javascript">

/**
 * 
 */
function test() {
	
}


</script>

';

echo '<pre>';

echo preg_replace('~
	<script.*>
	(.*)
	(function\s+test.*}) # вот это ваша функция
	(.*)
	</script>
	~xUis', '<script>$1$3</script>', $html);
// xUis - это то что надо ;)
 

Alexandre

PHPПенсионер
только ведь придётся несколько раз изменять и переписывать строки, это действительно будет быстрее, чем регэкспы?
все зависит от сложности регэкспа.
на простыз пхп выиигрывает. На сложных я не проверял.
 

kruglov

Новичок
Tammaco
Это не одна опция, а 4. И не опции это, а "модификаторы".
 

Tammaco

Новичок
да,модификаторы,извиняюсь.
если не трудно,подскажите,что они обозначают?
 
Сверху