Autor Zpráva
VelkýBubák
Profil
Mám script na alespoň rámcové ověření adres pro fb, z DB se načte adresa (např. 'https://www.facebook.com/velky.pako', 'http://www.facebook.com/profile.php?id=17089591', 'Strevo','www.facebook.com/pako.pako'), prohledá se zda tam nejsou nepravděpodobné znaky a slova, a u těch co projdou se na konci pokusí doplnit adresu, pomocí
if ((substr_count($po, 'http://'==0)) and (substr_count($po, 'https://'==0))  and (substr_count($po, 'facebook.com'==1)))
 { echo "<span class='varovani_18'>1: </span> substr_count($po, 'http://') = ".substr_count($po, 'http://').", substr_count($po, 'https://') = ".substr_count($po, 'https://').", substr_count($po, 'facebook.com') = ".substr_count($po, 'facebook.com')."<br>"; //ověření kudy se cesta ubírá
 $po = "http://".$po; }
if ((substr_count($po, 'http://'==0)) and (substr_count($po, 'https://'==0)) and (substr_count($po, 'facebook.com'==0))) 
 { echo "<span class='varovani_18'>2: </span> substr_count($po, 'http://') = ".substr_count($po, 'http://').", substr_count($po, 'https://') = ".substr_count($po, 'https://').", substr_count($po, 'facebook.com') = ".substr_count($po, 'facebook.com')."<br>"; 
 $po = "http://www.facebook.com/".$po; }
Nechápu proč, ale u uvedených příkladů, se chová takto:
1) příklad s https:// /* OK - neprojde ani jednou podmínkou */
2) příklad s http://
/*
2:
substr_count(http://www.facebook.com/profile.php?id=17089591, 'http://') = 1, 
substr_count(http://www.facebook.com/profile.php?id=17089591, 'https://') = 0, 
substr_count(http://www.facebook.com/profile.php?id=17089591, 'facebook.com') = 1

Výsledek:
http://www.facebook.com/http://www.facebook.com/profile.php?id=17089591*/
3) příklad se slovem /* KO - neprojde ani jednou podmínkou*/
4) příklad bez https:// nebo http:// /* KO - neprojde ani jednou podmínkou*/

nepředpokládám že by chyba byla přímo substr_count, protože podmínky co mám nad tím typu if (substr_count($po, 'emám')>0) $chyba++; fungují dobře
mimochodec
Profil
Já tomu nerozumím. Můžeš to napsat ještě jednou a pomaleji, abych pochopil, co od toho chceš a co to skutečně dělá, a případně učesat ten kód, aby se v tom dalo vyznat?
VelkýBubák
Profil
mimochodec:
* Vytáhnu si z db záznam (resp. adresu)
* proberu to sítem a ty co se mi nelíbí vypustím, a jsou čtyři dejme tomu formáty výstupu, s nimiž pak pracuji, a to:
** adresa začínající na https:// - tam chci, aby se neměnilo - a skutečnost taková je
** adresa začínající na http:// - tam chci, aby se neměnilo - a skutečnost taková není a na začátek se přidává http://www.facebook.com/
** adresa bez http://, nebo https:// - tam chci, aby se na začátku přidalo http:// - a skutečnost taková není, adresa zůstane beze změny
** nějaké slovo - tam chci, aby se na začátku přidalo http://www.facebook.com/ - a skutečnost taková není, adresa zůstane beze změny
(doufán že je to srozumitelnější)

a teď ke kódu, nechápu proč v tomto tvaru nefunguje
//adresa ... $po

/*první tři podmínky, aneb pokud v adrese není http:// a zároveň není https:// a je jednou facebook.com, pak by se podle mě měl provést příkaz v závorkách {}, nicméně pokud to takto zřetězím, proste to tak nefunguje*/
if ((substr_count($po, 'http://'==0) and
(substr_count($po, 'https://'==0) and
(substr_count($po, 'facebook.com'==1))

//aha, já *píp* měl blbě závorky ... nikoliv tedy něco jako (substr_count($po, 'facebook.com'==1)) ale (substr_count($po, 'facebook.com')==1)
mimochodec
Profil
VelkýBubák:
Jen ještě doplním, že by se to mnohem líp dešifrovalo, kdybys jednotlivé varianty substr_count($po, 'http://') načetl do proměnných a pak místo opakování pracoval s nimi.

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:

0