|
|
|
|
|
для: SS
(03.07.2006 в 12:19)
| | Есть такое дело, следует исправить следующим образом
<?php
$_POST['name'] = preg_replace("|^http|is", "http", $_POST['name']);
?>
|
| |
|
|
|
|
|
|
|
для: cheps (из кафе)
(03.07.2006 в 10:23)
| | Не работает. Такое сообщение:
Warning: preg_replace() [function.preg-replace]: No ending delimiter '|' found in /home/zam.php on line 30 | |
|
|
|
|
автор: cheps (из кафе) (03.07.2006 в 10:23) |
|
|
для: cheops (из кафе)
(03.07.2006 в 10:21)
| | Только, конечно, с str_replace это работать не будет, символ ^ - это символ регулярного выражения, поэтому должно быть что-то в этом духе
<?php
$_POST['name'] = preg_replace("|^http}is", "http", $_POST['name']);
?>
|
| |
|
|
|
|
автор: cheops (из кафе) (03.07.2006 в 10:21) |
|
|
для: SS
(03.07.2006 в 04:07)
| | Начало самой первой строки обозначается символом ^
<?php
$_POST = str_replace("^http", "http", $_POST);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(03.07.2006 в 00:16)
| | Спасибо.
Попутный вопрос:
Конец строки - \r
Начало строки - \n
А как обозначается начало самой первой строки? В данном сообщении - перед словом "Спасибо". \n для этого не подходит.
При добавлении сообщения мне нужно слово поставить пробел перед первым словом:
$_POST = str_replace("\r\nhttp", "\r\n http", $_POST);
|
| |
|
|
|
|
|
|
|
для: SS
(02.07.2006 в 23:52)
| | Хм... а у вас регулярные выражения в preg_match() и preg_replace_callback() не совпадают, поэтому код не будет срабатывать и само регулярное выражение слудет немного поправить.
<?php
function measure_string($out)
{
$out[2] = str_replace(" ", " ", $out[2]);
return " <a href=\"http://".$out[1]."\" target='_blank'>http://".$out[2]."</a>";
}
$msg['mess'] = '[url = http://penelope.uchicago.edu/Thayer/E/Roman/Texts/secondary/SMIGRA/Accensi.html]Текст с пробелами[/url]';
if (preg_match("#\[url[\s]*=[\s]*([\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#isU", $msg['mess'] ));
{
$msg['mess']=preg_replace_callback("#\[url[\s]*=[\s]*([\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#isU",'measure_string',$msg['mess']);
}
echo $msg['mess'];
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(01.07.2006 в 21:52)
| | Что-то не получается у меня... Покажите, пожалуйста, как это должно выглядеть.
Сейчас так:
<?
if (preg_match("/\[url=\s*(\S*)\s*\]\s*\[\/url\]/si", $msg['mess'] ));
{
function measure_string($out)
{
$out[2] = str_replace(" ", " ", $out[2]);
return " <a href=\"http://".$out[1]."\" target='_blank'>http://".$out[2]."</a>";
}
$msg['mess']=preg_replace_callback("/\[url=\s*(\S*)\s*\=url]\s*(\S*)\s*\[\/url\]/si",'measure_string',$msg['mess']);
}
?>
|
| |
|
|
|
|
|
|
|
для: SS
(01.07.2006 в 17:39)
| | Для этого необходимо воспользоваться функцией preg_replace_callback() - т.е. заменять пробелы в результате уже в функции обратного вызова. | |
|
|
|
|
|
|
| Как в строке
<?
$msg['mess']=preg_replace("/\[url=\s*(\S*)\s*\=url]\s*(\S*)\s*\[\/url\]/si",'<a href="\\1"target=_blank>\\2</a>',$msg['mess']);
?>
|
заменить в параметре \\2 пробелы на nbsp; - ? | |
|
|
|
|