|
|
|
| Найденные слова в тексте в тегах [gl] надо передать на латинице на другую страницу так как русский не хрена не воспринимается. Вот сделал так но ошибки как правильно сделать подскажите
$text="это [gl]софтовый[/gl] текст";
$text = preg_replace("#\[gl\](.+?)\[/gl\]#sie", '<a href=\"ru2Lat($1)\">ru2Lat($1)</a>', $text);
echo "$text
\n";
function ru2Lat($string){
$string = str_replace("/","",$string);
$string = str_replace("\\","",$string);
$string = str_replace(".","",$string);
$string = str_replace("`","",$string);
$string = str_replace("'","",$string);
$string = str_replace(",","",$string);
$string = str_replace("-","",$string);
$string = str_replace("=","",$string);
$string = str_replace("+","",$string);
$string = str_replace("—","",$string);
$string = str_replace("!","",$string);
$string = str_replace(":","",$string);
$string = str_replace('"',"",$string);
$string = str_replace("«","",$string);
$string = str_replace("»","",$string);
$string = str_replace("“","",$string);
$string = str_replace("„","",$string);
$string = str_replace(""","",$string);
$string=ereg_replace(" +","_",$string);
$rus = array('ё','ж','ц','ч','ш','щ','ю','я','Ё','Ж','Ц','Ч','Ш','Щ','Ю','Я');
$lat = array('yo','zh','tc','ch','sh','sh','yu','ya','YO','ZH','TC','CH','SH','SH','YU','YA');
$string = str_replace($rus,$lat,$string);
$string = strtr($string,
"АБВГДЕЗИЙКЛМНОПРСТУФХЪЫЬЭабвгдезийклмнопрстуфхъыьэ",
"ABVGDEZIJKLMNOPRSTUFH'I'Eabvgdezijklmnoprstufh'i'e");
$string = str_replace("'","",$string);
$string = str_replace('"',"",$string);
return($string);
}
|
выдает об ошибке | |
|
|
|
|
|
|
|
для: dirol
(02.07.2008 в 23:09)
| | Модификатор 'e' интерпретирует заменяющую строку как PHP-код.
У вас получается заменяющая строка:
<a href=\"ru2Lat($1)\">ru2Lat($1)</a>
|
Валидным PHP-кодом она не является. | |
|
|
|
|
|
|
|
для: dirol
(02.07.2008 в 23:09)
| | Особо не разбирался, но насчет регулярок, то так
$text = preg_replace("#\[gl\](.+?)\[/gl\]#sie", "'<a href=\"'.ru2Lat('$1').'\">ru2Lat($1)</a>'", $text);
|
| |
|
|
|
|
|
|
|
для: AcidTrash
(02.07.2008 в 23:44)
| | всем спасибо поогли. | |
|
|
|
|
|
|
|
для: dirol
(03.07.2008 в 00:00)
| | а функцию strtr никто не вспомнил, очень, кстати, удобная для транслита
strtr
(PHP 3, PHP 4, PHP 5)
strtr -- Преобразует заданные символы
Описание
string strtr ( string str, string from, string to )
string strtr ( string str, array replace_pairs )
Эта функция возвращает строку str, в которой каждое вхождение любого символа из перечисленных в from заменено на соответствующий символ из строки to.
Если длины строк from и to отличаются, "лишние" символы в более длинной строке не используются. Пример 1. Пример использования strtr()
<?php
$addr = strtr($addr, "дец", "aao");
?>
strtr() может вызываться с двумя аргументами. В этом случае from должен быть массивом, индексы которого трактуются как строки поиска, а соответствующие значения - как строки замены. strtr() в первую очередь заменяет более длинные подстроки, причем одна и та же строка поиска используется только один раз.
Пример 2. Пример использования strtr() с двумя аргументами
<?php
$trans = array("hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
?>
Этот код выведет:
hello all, I said hi | |
|
|
|
|
|
|
|
для: GeorgeIV
(03.07.2008 в 10:19)
| | возникла проблема
$text="это [gl]соф товый[/gl] текст";
$text = preg_replace("#\[gl\](.+?)\[/gl\]#sie", '<a href=\"ru2Lat($1)\">ru2Lat($1)</a>', $text);
если слово с пробелом то писец сразу ошибка идет. подскажите как исправить | |
|
|
|
|
|
|
|
для: dirol
(10.07.2008 в 16:10)
| | непонятки там какие-то у вас с буквами ЫыЪъЬь, пробелами , и ещё некоторыми символами которые могут оказаться в таких строках.
, Если могут
<pre><?
function ru2Lat($string){
$string = str_replace(
array("\n", "\r", "ь", "Ь", "ъ", "Ъ", "/", "\\", ".", "`", "'", ",", "-", "=", "+",
"—", "!", ":", '"', "«", "»", "“",
"„", """),
'', $string);
$rus = array(' ', 'ё','ж','ц','ч','ш','щ','ю','я','Ё','Ж','Ц','Ч','Ш','Щ','Ю','Я');
$lat = array('_', 'yo','zh','tc','ch','sh','sh','yu','ya','YO','ZH','TC','CH','SH','SH','YU','YA');
$string = str_replace($rus, $lat, $string);
$string = strtr($string,
"АБВГДЕЗИЙКЛМНОПРСТУФХЫЭабвгдезийклмнопрстуфхыэ",
"ABVGDEZIJKLMNOPRSTUFHYEabvgdezijklm noprstufhye");
return($string);
}
$text="это [gl] 'софтовый'
[/gl] текст";
$text = preg_replace("#\[gl\](.+?)\[/gl\]#sie", "'<a href=\"'.ru2Lat('$1').'\">' . ru2Lat('$1') . '</a>'", $text);
echo "$text
\n";
?></pre>
|
| |
|
|
|
|
|
|
|
для: xx77
(10.07.2008 в 22:10)
| | хотя лучше так
$text = preg_replace("#\[gl\](.+?)\[/gl\]#sie", "'<a href=\"'.(\$x = ru2Lat('$1')).'\">' . \$x . '</a>'", $text);
| чтобы не применять дважды одну функцию к одному тексту | |
|
|
|
|