Autor Zpráva
Casper
Profil
Dobrý den, snažil jsem se vymyslet regulár, aby mi z libovolného řetězce začínajícího nebo končícího pomlčkou (nebo obojí) vytvořil samotný řetězec bez krajních pomlček. Vymyslel jsem dva regulární výrazy, které sice funguje přesně jak mají, ale rád bych řetězec testoval jen jednou.
 
$url = ereg_replace('^(.*)-$','\\1',$url);
$url = ereg_replace('^-(.*)$','\\1',$url);

Prosím poraďte jak skloubit tyto dva reguláry v jeden se stejným účinkem na řetězec :) děkuji
Kacko
Profil
^-?(.*)-?$

by mohlo fungovat
Casper
Profil
To jsem zkoušel jako první, ale nefunguje, ponechá poslední pomlčku. Sice nevím proč, protože by regulár přece měl být "žravý" ale je to tak...
Joker
Profil
Casper:
Sice nevím proč, protože by regulár přece měl být "žravý"
No asi právě proto... že pomlčka na konci taky odpovídá .* ...možná by pomohl spíš líný:
^-?(.*?)-?$
Casper
Profil
JoKer: máte pravdu, zamyslel jsem se špatným směrem, každopádně vaše možnost hlásí Warning: ereg_replace() [function.ereg-replace]: REG_BADRPT
Kacko
Profil
A co na to pouzit obycejny
trim($url,"-")
?
Casper
Profil
Kacko: Dobrý nápad, ale nefunguje...

EDIT: jak jsem pochopil z manuálu, trim odstraňuje pouze netisknutelné znaky, druhý parametr může určit pouze některé z nich, nikoli jiné (tisknutelné) znaky
Kacko
Profil
Casper:
To reseni funguje, chyba bude jinde. Zkontrolujte co je v
$url
(mezery na zacatku atp).
Casper
Profil
Kacko: tak to je zvláštní, že vám toto řešení funguje, můj string už je ošetřený pro URL, obsahuje pouze a-z0-9_- jinak nic, tak nevím kde je chyba, verze php je vyšší než 4.1.0, takže parametr podporuje... stále se však domnívám, že trim ostraňuje pouze netisknutelné znaky
Kacko
Profil
Casper:
To je vazne divne. Me to na 5.2.8 funguje.
igamenir
Profil
Casper, Joker:
Jokerův postup je dobrý, udělal bych ho taky, ale funguje jen v preg, tedy
$url = preg_replace('~^-?(.*?)-?$~','\\1',$url);
.
Navíc koukám, že "As of PHP 5.3.0 the regex extension is deprecated in favor of the PCRE extension." takže přesun k preg není určitě od věci.
Casper
Profil
Sakra jsem idiot, už to jede, omlouvám se za zmatky, děkuji za elegantní řešení přes trim i přes reguláry

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: