Autor Zpráva
Ladicek
Profil *
Potřeboval bych script, který převede všelijaké znaky (,.-;|) a pouze mezeru kolem nich ... na znak |
Jak toho docílím? Možná přes regulérní výrazy, ale nemám ponětí jak.
abc
Profil
Možná jsem to blbě pochopil, ale asi něco jako:
$replace = array(" ,", ", ", " .", ". ", " ;", "; ", " |", "| ");
$replace_w = "|";

$str = "tohle se nezameni,ale tohle ano ;";

$replaced = str_replace($replace, $replace_w, $str);
echo $replaced;

Kdyby toho na zaměnění bylo víc, jistě by to nebylo složité zautomatizovat. Můžeš např z pole znaků, které se mají zaměnit, vyrobit podobné pole jako jsem vyrobil já, zbytek je stejný.


Zautomatizovat to lze např. takto:
$replace_str = ",.-;|";
$replace = array();
for($i = 0; $i < strlen($replace_str); $i++){
  $replace[] = " " . $replace_str[$i];
  $replace[] = $replace_str[$i] . " ";    
}
    
$replace_w = "|";

$str = "tohle se nezameni,ale tohle ano ;";

$replaced = str_replace($replace, $replace_w, $str);
echo $replaced;
Tori
Profil
Ladicek:
Možná přes regulérní výrazy
preg_replace. Regulár poskládáte jako:
- nula a více mezer
- množina nechtěných znaků (viz manuál)
- nula a více mezer
Základní info k regulárům, jak je sestavit: http://www.regularnivyrazy.info/regularni-vyrazy-zaklady.html

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: