ugrás a tartalomhoz

css fájlból ID kinyerése

cszlak · 2013. Május. 12. (V), 16.47
Olyan kérdésem lenne , hogy

van egy css fájl PL: css/index_style.css
(Az elérési útvonalát ismerem.)

Valahogy meg lehet tudni, hogy milyen ID-ket tartalmaz?
(php, js,jquery megoldás is érdekel.)

Pontosan a benne lévő Pl: #center_left{} -ből a "center_left" kellene.
 
1

preg_match_all

szabo.b.gabor · 2013. Május. 12. (V), 17.20
$cssContent=file_get_contents('path_to_css');

$matches=array();
$pattern='/(#[a-zA-Z0-9-]+)/';

preg_match_all($pattern, $cssContent, $matches);

print_r($matches);
valahogy így, bár ez a színkódokat is kiírja..
3

Nem rossz...

cszlak · 2013. Május. 12. (V), 18.11
Nem rossz, bár a színkódok valóban kár, hogy berakja.
Annyit változtattam rajta, hogy a 0-9 -et kivettem és a '-' helyett '_' lett.
így kicsit pontosabb, de még néhány színkód így is belekeveredik.
De ezen a vonalon már el lehet indulni.
7

Hogyan kell

cszlak · 2013. Május. 12. (V), 18.49
Hogyan kell bele rakni ebbe:
$pattern='/(#[a-zA-Z0-9-]+)/';  
Hogy csak az 7 és 50 karakter hosszúságokat vegye figyelembe?
Így ki lehetne zárni belőle a színkódokat.

Közben megoldottam:
$pattern='/(#[a-zA-Z_]{7,50}+)/';  
Így kevésbé írja ki a színkódokat, viszont ha rövidebb ID név van azt kihadja, de nekem így jó, mert rövid nevű nem lesz benne.

Ki lehet még egészíteni még ezzel:

$eredmeny =   array_unique ($matches[0]);
Így kiszűri és mindegyiket csak egyszer veszi.

Köszönöm a segítséget!
8

Csináld pontosan!

Pepita · 2013. Május. 12. (V), 20.53
Ha van egy konkrét feladatod, akkor pontosan azt programozd, ami a feladat!

Mi a majdnem biztos különbség az id és a szín között?
Az, hogy az id után van {. Persze nézni kell közöttük esetleges whitespace-t, egyéb karaktereket (child) is. Ha nincs {, de van ; és az érték 3 v 6 karakternyi hexa szám, akkor nem id.

Remélem így ki tudod pontosítani.
9

Akkor már inkább írjon egy

Joó Ádám · 2013. Május. 13. (H), 00.06
Akkor már inkább írjon egy tisztességes parsert, ami csak a kiválasztó pozícióban lévő elemeket figyeli.
10

Vagy használjon egy meglévőt,

tgr · 2013. Május. 13. (H), 12.14
Vagy használjon egy meglévőt, pl. PHP-CSS-Parser. Komplex CSS-re (kommentek, @ rule-ok stb.) parsert írni nem is olyan könnyű, a regex-alapú keresés meg egy csomó hamis pozitívot találhat (pl. SVG sprite fragment identifierek, content attribútum :before/:after-ben).
2

Ha az oldalon be van töltve

MadBence · 2013. Május. 12. (V), 17.58
Ha az oldalon be van töltve az adott stíluslap, akkor:

var ids = Array.prototype.reduce.call(
  Array.prototype.filter.call(
    document.styleSheets,
    function(styleSheet) {
      return styleSheet.href && styleSheet.href.indexOf('css/index_style.css') !== -1;
    })[0].rules,
  function(ids, rule) {
    var match = rule.selectorText.match(/#[a-z0-9_-]+/gi);
    return match ? ids.concat(match.map(function(id) {
      return id.substr(1);
    })) : ids;
  }, []).reduce(function(arr, curr) {
    return arr.every(function(el) {
      return el !== curr;
    }) ? arr.concat([curr]) : arr;
  }, []);
De minek kell ez neked?
4

Nincs betöltve a stíluslap

cszlak · 2013. Május. 12. (V), 18.17
Nincs betöltve a stílus lap.

Egy Tartalom kezelő felület meneger oldalára szánom.
Autómatizálni akarom, mert most manálisan működik. (kiválassza a css-fájl, majd beírja az ID nevét)
DE pontosan még nem tudom, hogy kellene megoldani, mindent. (csak ötletelgetek, és szedegetem a netről az ötleteket)

Az ID -t az fckeditor -nak akarom megadni.

Viszont amiben segített a te ötleted is, hogy a 'A-Z' -t is ki lehet venni, mert a Divnek nem adnak nagybetűs nevet.
5

Azért van kiszedve az A-Z,

MadBence · 2013. Május. 12. (V), 18.19
Azért van kiszedve az A-Z, mert ki van kapcsolva a kis-nagybetű érzékeny keresés (i kapcsoló). Teljesen szabályos, ha egy id nagybetűt is tartalmaz.
6

Bocsi

cszlak · 2013. Május. 12. (V), 18.23
Bocs , az a szabo.b.gabor kódjára gondoltam, hogy kivettem.
Ezekben a css kódokban viszont nem lesz nagybetű.