Diskuze: Nahrazení textu mezi tagy
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Co takhle radsi pouzit nejaky DOM parser ? viz. http://simplehtmldom.sourceforge.net/
Jak přesně? Promiň, moc si nedovedu představit, jak bych s tím měl
pracovat...
(vzhledem k nahrazování, s DOM umím pracovat)
Pokud to správně chápu, měla by ti stačit obyčejná funkce např. z PSPadu "Hledat > Hledat/nahradit v souborech...", popr. to urcite bude umet i total commander apod.
Ahoj, pokusil jsem se něco vytvořit, ale není to úplně dokonalé řešení.
$text = '<body><p><span class="error">error text<strong>strong error text</strong></span></p></body>';
$ignoreLeft = '"<'; // Budou se ignorovat slova, která předchází " nebo <
$ignoreRight = '">'; // a zároveň následuje " nebo >.
// Asociativní pole, kde klíč je původní slovo a hodnota nové slovo.
$translateMap = ['error' => 'chyba', 'strong' => 'tučný'];
// Projdou se všechna slova, která se mají přeložit.
foreach(array_keys($translateMap) as $word) {
// Každé nalezené původní slovo se nahradí příslušným novým slovem.
$text = preg_replace('/([^' . $ignoreLeft . '])' . $word . '([^' . $ignoreRight . '])/', '$1' . $translateMap[$word] .'$2', $text);
}
J moje chyba, myslel sem, že to umí i nějaký podmínky. Můžeš zkusit http://www.stahuj.centrum.cz/…madny-menic/ což sem rychle vygooglil
Tak nakonec po několika hodinách hledání jsem našel řešení
Přikládám
$content = preg_replace('#' . preg_quote($word) . '(?!([^<]+)?>)#i', $value, $content);
Zobrazeno 10 zpráv z 10.